package co.udea.businesslogic.imp;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import co.edu.udea.dao.DispositivoDao;
import co.edu.udea.dao.SolicitudDao;
import co.edu.udea.dao.UsuarioDao;
import co.edu.udea.model.Dispositivo;
import co.edu.udea.model.Solicitud;
import co.edu.udea.model.Usuario;
import exceptions.ExecptionRTF;

/**
 * 
 * @author Cristina Isabel Mejia Gonazalez
 *
 */
public class ServicioSolicitud {

private Logger log = Logger.getLogger(this.getClass());	
	
	@Autowired
	private SolicitudDao solicitudDao;	
	@Autowired
	private DispositivoDao dispositivoDao;
	@Autowired
	private UsuarioDao usuarioDao;

	
	public SolicitudDao getSolicitudDao() {
		return solicitudDao;
	}
	public void setSolicitudDao(SolicitudDao solicitudDao) {
		this.solicitudDao = solicitudDao;
	}
	public DispositivoDao getDispositivoDao() {
		return dispositivoDao;
	}
	public void setDispositivoDao(DispositivoDao dispositivoDao) {
		this.dispositivoDao = dispositivoDao;
	}
	public UsuarioDao getUsuarioDao() {
		return usuarioDao;
	}
	public void setUsuarioDao(UsuarioDao usuarioDao) {
		this.usuarioDao = usuarioDao;
	}
	
	/**
	 * 
	 * @param solicitud la cual sera guardada.
	 * @return la solicitud en caso de que el guardado fuese exitoso.
	 * @throws ExecptionRTF
	 */
	public Solicitud generarSolicitud(Solicitud solicitud) throws ExecptionRTF{
		solicitud = solicitudDao.generarSolicitud(solicitud);
		return solicitud;
	}
	
	/**
	 * 
	 * @return Obtiene las solicitudes con estado pendiente 1
	 * @throws ExecptionRTF
	 */
	public List<Solicitud> obetenrPendientes() throws ExecptionRTF{
		return solicitudDao.obtenerSolicitudesPendientes();
	}
	
	/**
	 * 
	 * @param codigoSolicitud: Codigo de la solicitud que se buscara
	 * @return La solicitud asociada al codigo dado
	 * @throws ExecptionRTF
	 */
	public Solicitud obtenerSolicitud(String codigoSolicitud) throws ExecptionRTF{
		return solicitudDao.obtenerSolicitud(codigoSolicitud);
	}
	
}
